🎖️GitЯра🎖️
src/helpers/ArduinoSerialInterface.cpp 93b2db63de9009af047a2d0e1bcd97b4b0ba7106 (93b2db63) Text, 1.93 KB
Tff7b72#Tff7b72include T8b949e"ArduinoSerialInterface.h"
Tff7b72#Tff7b72define RECV_STATE_IDLE 0
Tff7b72#Tff7b72define RECV_STATE_HDR_FOUND 1
Tff7b72#Tff7b72define RECV_STATE_LEN1_FOUND 2
Tff7b72#Tff7b72define RECV_STATE_LEN2_FOUND 3
Tffa657void Td2a8ffArduinoSerialInterface::enableTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3_isEnabled Tff7b72= Tffa657trueTb4b4b4;
Te6edf3_state Tff7b72= Te6edf3RECV_STATE_IDLETb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffArduinoSerialInterface::disableTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3_isEnabled Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffArduinoSerialInterface::isConnectedTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4; T8b949e// no way of knowing, so assume yes
Tb4b4b4}
Tffa657bool Td2a8ffArduinoSerialInterface::isWriteBusyTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tffa657size_t Td2a8ffArduinoSerialInterface::writeFrameTb4b4b4(Tff7b72const Tffa657uint8_t Te6edf3srcTb4b4b4[Tb4b4b4]Tb4b4b4, Tffa657size_t Te6edf3lenTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3len Tff7b72> Te6edf3MAX_FRAME_SIZETb4b4b4) Tb4b4b4{
T8b949e// frame is too big!
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tffa657uint8_t Te6edf3hdrTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4;
Te6edf3hdrTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Ta5d6ff'Ta5d6ff>Ta5d6ff'Tb4b4b4;
Te6edf3hdrTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3len Tff7b72& T79c0ff0xFFTb4b4b4)Tb4b4b4; T8b949e// LSB
Te6edf3hdrTb4b4b4[T79c0ff2Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3len Tff7b72>Tff7b72> T79c0ff8Tb4b4b4)Tb4b4b4; T8b949e// MSB
Te6edf3_serialTff7b72-Tff7b72>Te6edf3writeTb4b4b4(Te6edf3hdrTb4b4b4, T79c0ff3Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3_serialTff7b72-Tff7b72>Te6edf3writeTb4b4b4(Te6edf3srcTb4b4b4, Te6edf3lenTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657size_t Td2a8ffArduinoSerialInterface::checkRecvFrameTb4b4b4(Tffa657uint8_t Te6edf3destTb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72while Tb4b4b4(Te6edf3_serialTff7b72-Tff7b72>Te6edf3availableTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tffa657int Te6edf3c Tff7b72= Te6edf3_serialTff7b72-Tff7b72>Te6edf3readTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3c Tff7b72< T79c0ff0Tb4b4b4) Tff7b72breakTb4b4b4;
Tff7b72switch Tb4b4b4(Te6edf3_stateTb4b4b4) Tb4b4b4{
Tff7b72case Tff7b72RECV_STATE_IDLETb4b4b4:
Tff7b72if Tb4b4b4(Te6edf3c Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff<Ta5d6ff'Tb4b4b4) Tb4b4b4{
Te6edf3_state Tff7b72= Te6edf3RECV_STATE_HDR_FOUNDTb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tff7b72case Tff7b72RECV_STATE_HDR_FOUNDTb4b4b4:
Te6edf3_frame_len Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3cTb4b4b4; T8b949e// LSB
Te6edf3_state Tff7b72= Te6edf3RECV_STATE_LEN1_FOUNDTb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72case Tff7b72RECV_STATE_LEN1_FOUNDTb4b4b4:
Te6edf3_frame_len Tff7b72|Tff7b72= Tb4b4b4(Tb4b4b4(Tffa657uint16_tTb4b4b4)Te6edf3cTb4b4b4) Tff7b72<Tff7b72< T79c0ff8Tb4b4b4; T8b949e// MSB
Te6edf3rx_len Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3_state Tff7b72= Te6edf3_frame_len Tff7b72> T79c0ff0 Tff7b72? Te6edf3RECV_STATE_LEN2_FOUND Tff7b72: Te6edf3RECV_STATE_IDLETb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72defaultTff7b72:
Tff7b72if Tb4b4b4(Te6edf3rx_len Tff7b72< Te6edf3MAX_FRAME_SIZETb4b4b4) Tb4b4b4{
Te6edf3rx_bufTb4b4b4[Te6edf3rx_lenTb4b4b4] Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3cTb4b4b4; T8b949e// rest of frame will be discarded if > MAX
Tb4b4b4}
Te6edf3rx_lenTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3rx_len Tff7b72>Tff7b72= Te6edf3_frame_lenTb4b4b4) Tb4b4b4{ T8b949e// received a complete frame?
Tff7b72if Tb4b4b4(Te6edf3_frame_len Tff7b72> Te6edf3MAX_FRAME_SIZETb4b4b4) Te6edf3_frame_len Tff7b72= Te6edf3MAX_FRAME_SIZETb4b4b4; T8b949e// truncate
Te6edf3memcpyTb4b4b4(Te6edf3destTb4b4b4, Te6edf3rx_bufTb4b4b4, Te6edf3_frame_lenTb4b4b4)Tb4b4b4;
Te6edf3_state Tff7b72= Te6edf3RECV_STATE_IDLETb4b4b4; T8b949e// reset state, for next frame
Tff7b72return Te6edf3_frame_lenTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Served by rngit 1.5.2 - Generated in 0.03s